package com.itheima.d4_charset;

import java.util.Arrays;

//目标：掌握字符集的编码、解码操作
public class Demo1 {
    public static void main(String[] args) throws Exception {
        /**
         * String编码：把文字符号变成数字数据
         *      byte[] getBytes()：使用平台的默认字符集将该 String编码为一系列字节，将结果存储到新的字节数组中
         *      byte[] getBytes(String charsetName)：使用指定的字符集将该 String编码为一系列字节，将结果存储到新的字节数组中
         *
         * String解码：把数字数据解析成文字符号
         *      String(byte[] bytes)：通过使用平台的默认字符集解码指定的字节数组来构造新的String
         *      String(byte[] bytes, String charsetName)：通过指定的字符集解码指定的字节数组来构造新的String
         */

        // 1.分别使用默认编码和GBK编码将"abc"进行编码，得到字节数组数据
        byte[] bys1 = "abc".getBytes();
        System.out.println("abc用默认编码，编码后：" + Arrays.toString(bys1));

        byte[] bys2 = "abc".getBytes("gbk");
        System.out.println("abc用gbk编码，编码后：" + Arrays.toString(bys2));

        // 2.将"abc"编码成的字节数组，用String解码成字符串
        String str = new String(bys1);
        System.out.println(str);

        // 3.分别使用默认编码和GBK编码将"中国"进行编码，得到字节数组数据
        byte[] bys3 = "中国".getBytes();
        System.out.println("中国用默认编码，编码后：" + Arrays.toString(bys3));

        byte[] bys4 = "中国".getBytes("gbk");
        System.out.println("中国用gbk编码，编码后：" + Arrays.toString(bys4));

        // 4.将"中国"编码成的字节数组，用String解码成字符串
        //用默认编码，解码bys3
        String str1 = new String(bys3);
        //用gbk编码，解码bys3（此时编码和解码方案不一样）
        String str2 = new String(bys3, "gbk");
        System.out.println("str1：" + str1);
        System.out.println("str2：" + str2);
        //注意：编码和解码方案要一致，否则会出现乱码！
    }
}
